package co.edu.uniquindio.ondas.entidades;

import co.edu.uniquindio.ondas.entidades.Persona;

import java.io.Serializable;
import java.lang.String;
import java.util.List;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: Asesor
 * Entidad que hereda de la enidad Persona
 */
@Entity
@DiscriminatorValue("asesor")
public class Asesor extends Persona implements Serializable {

	/**
	 * Clave del Asesor
	 */
	private String clave;
	/**
	 * Relacion bidireccional con la entidad investigacion. Se crea una lista de
	 * investigaciones para un Asesor
	 */
	@OneToMany(mappedBy = "asesor", cascade=CascadeType.ALL)
	private List<Investigacion> investigaciones;
	/**
	 * Foto del Asesor
	 */
	@Lob
	private byte[] foto;

	/**
	 * Relacion bidireccional con la entidad lineaTematica. Se crea un atributo
	 * de tipo de linea Tematica para saber a que linea pertenece el Asesor
	 */
	@ManyToOne
	private LineaTematica lineaTematica;

	private static final long serialVersionUID = 1L;

	/**
	 * Metodo constructor
	 */
	public Asesor() {
		super();
	}

	/**
	 * Metodo accesor del atributo clave
	 * 
	 * @return the clave
	 */
	public String getClave() {
		return clave;
	}

	/**
	 * Metodo modificador del atributo
	 * 
	 * @param clave
	 *            the clave to set
	 */
	public void setClave(String clave) {
		this.clave = clave;
	}

	/**
	 * Metodo accesor del atributo investigaciones
	 * 
	 * @return the investigaciones
	 */
	public List<Investigacion> getInvestigaciones() {
		return investigaciones;
	}

	/**
	 * Metodo modificador del atributo
	 * 
	 * @param investigaciones
	 *            the investigaciones to set
	 */
	public void setInvestigaciones(List<Investigacion> investigaciones) {
		this.investigaciones = investigaciones;
	}

	/**
	 * Metodo accesor del atributo foto
	 * 
	 * @return the foto
	 */
	public byte[] getFoto() {
		return foto;
	}

	/**
	 * Metodo modificador del atributo
	 * 
	 * @param foto
	 *            the foto to set
	 */
	public void setFoto(byte[] foto) {
		this.foto = foto;
	}

	/**
	 * Metodo accesor del atributo lineaTematica
	 * 
	 * @return the lineaTematica
	 */
	public LineaTematica getLineaTematica() {
		return lineaTematica;
	}

	/**
	 * Metodo modificador del atributo
	 * 
	 * @param lineaTematica
	 *            the lineaTematica to set
	 */
	public void setLineaTematica(LineaTematica lineaTematica) {
		this.lineaTematica = lineaTematica;
	}

}
